約 4,642,328 件
https://w.atwiki.jp/linux2ch/pages/82.html
GNU関係。 フリーなUNIX OSソフトウェア部品「GNU」と、GNUを開発するGNU Project、ライセンスのGPLやLGPLに関するFAQ。 GNU関係。 GNUって何ですか? 具体的に何が作られてるの? GPL って何ですか? LGPL って何ですか? GPL のソフトウェアを BSD ライセンスなど、配布の制限が少ないライセンスで配布できますか? 上の逆 (BSD ライセンスなど、配布の制限が少ないライセンスのソフトウェアを GPL で配布) は可能? なんで継承条項が必要なの? GNUって何ですか? 一般的な言葉の用法はともかくとして、厳密かつ正確に言えば、GNUはOSの名前、GNU ProjectはGNUを開発するプロジェクト、FSFはGNU Projectとして開発されたフリーソフトウェアとライセンスの管理財団です。 GNU Projectでは、UNIX互換のOSをフリーソフトウェアとして開発することを目指しており、その名前がGNUと呼ばれる。(*1) GNU Projectは自主参加型のプロジェクトで、フリーソフトウェアとして使えるソフトウェアを自ら開発しようとする人で成り立っている。FSFはライセンスやフリーソフトウェアとして寄贈された知的財産を管理する組織。 元々の目的はUNIX互換ツールを開発してフリーで公開することだったがカーネル以外の細々としたツールは大体出来上がったし、カーネルはLinuxが登場してすぐに実用段階まで成長したので、今は過去に作られたソフトウェアのメンテナンスだとか、UNIX互換に限らないフリーソフトウェアの自主開発とかをやっている。 Linuxでは、カーネルをビルドするためのコンパイラなどにGNU Projectとして開発されたものが使われている。また、カーネルを起動するためのブートローダー、起動したカーネルで実行できるUNIXツールの中にGNU Project由来のソフトが多数再利用されており、ユーザーランドから見てGNU由来のソフトが多いため、それを強調して「GNU/Linux」と呼ぶこともある。 GNU/Linuxの頭に「GNU」とついてるのは別にLinuxがGNUのものだとか示したいわけではなく、Linuxの上でGNUが動いているという意味や状態を指す。Java/WindowsとかLinux/PPCとかみたいなもん。 具体的に何が作られてるの? 汎用コンパイラGCC、C言語ライブラリGlibc、コンパイル自動化ツールMake、ビルドシステムAutotoolsなどプログラミング関係のツール マイクロカーネルHurd UNIX互換の小さなソフトツール群(coreutils, diffutils, findutils, grep, sed, awk, ...) コマンドラインシェルBash テキストエディタEmacs プロジェクトに寄稿された雑多なソフトプロジェクト多数 GNU Projectとして開発されたフリーソフトウェアの例 http //en.wikipedia.org/wiki/List_of_GNU_packages GPL って何ですか? GNU General Public License(GNUの一般公共ライセンス)の略。 「ソフトウェアはユーザーに自由であるべき」というGNU Projectによる考えから作られたフリーソフトウェアの開発・配布促進用ライセンス。 ライセンスの内容は和訳(法的な効力はなし)を参照のこと。 以下は要約 ソフトウェアを誰にでも自由に扱えるようにしたい。が、そのためには著作権でソフトが自由に使われるようにする必要がある。 複製品に著作権表示を行うこと 複製、または改変したものを配布するときは: 変更されたことを明記すること 全体をこのライセンスに従ってライセンスすること 対話的に実行する形式に改変する場合は、適切な場所に著作権表示と保証の有無を記載すること バイナリ形式で配布する場合は以下のどれかを選ぶこと ソースコードを添付する ソースコードを提供すると述べた有効な書面を示す バイナリを得た際に得た情報を渡す ライセンスで提示された内容を除き、コピーや改変、サブライセンスを行ってはならない このライセンスを許諾する必要はない。が、このライセンス以外に複製、改変、配布する許可を与えるものは存在せず、そうした行為は法によって禁止される。 再配布したとき、受取人は自動的にここにある許可を得る。配布者は権利を制限できないし、同意を強制することもできない。 裁判所の命令でこのライセンスと矛盾する責任がかせられた場合でも、このライセンスの条件は免除されない。よって、そうした場合は配布を諦めなければならない。 節の一部分が特定状況下で実施不可能であっても、節の残りの部分は機能する。そうでない場合は全体が機能する。 元々は GNU Project のライセンスだったが、Linux などでも採用された。改変された状態であっても元のソフトウェアと同じく自由な姿での配布を要求する「コピーレフト」を主張するライセンスの1つ。 GNU General Public License / 和訳 LGPL って何ですか? GPL を少し緩めたライセンス。GNU Lesser General Public License(GNU 劣等 一般公衆利用許諾契約)の略。 GNU では使用することを勧めていません。 GPL で配布されているソフトでは、改変して配布する場合も全体をGPLで配布しないといけない。これは、元の著作物とは別に「派生物」と呼ばれる。 ただし、改変したプログラムにGPLだったプログラム片がどれだけ含まれていればそれが派生物とされるのか、という点が曖昧だという問題があった。GPLなコードを1行入れただけでも派生物なら(※)、GPLなライブラリにリンクさせるために、GPLな関数のシンボル情報を組み込むのはどうなのか、とか。 ※:元々のコードから該当部分以外を削除し、独自にコードを追加したものと考えられるため、GPLな著作物の派生物となる。 この場合、独自コード追加部分の著作権は自分にあるので、たとえばBSDライセンスなどで自分のコード部分を公開するようなことも可。 GPLな著作物とくっつけて配布するためには、自分のコードもGPL可での利用を許可する必要あり。あとでGPLなところを消して書き直してしまえば、自分で1から作ったソフトとして任意のライセンスを選択可。 ライブラリを使うソフトをGPLなものに限定するのならこうした問題を気にする必要はないが、GPLと矛盾するライセンスのソフトが受け入れられるためには問題になるので、わざわざライブラリ用にLGPLってのが開発された。 LGPL では、従来の GPL 方式の自由さをユーザーに一部与えているものの、ライブラリを呼び出すだけのプログラムは派生物ではなくなったので、そうしたプログラムはGPL互換でない非自由なライセンスでもユーザーに配布できる。glibcとかgtk+とかopenoffice.orgとかがLGPLに含まれる。 GNU Lesser General Public License / 和訳 GPL のソフトウェアを BSD ライセンスなど、配布の制限が少ないライセンスで配布できますか? GPL では、配布の条件として同じライセンスで配布することが求められるので、それはできない。 BSDライセンスでは、ソフトウェアを自由でない状態で配布することが一切禁じられていないので、GPLなソフトをBSDライセンスで配布するということは、元のソフトを自由でない状態で配布する許可を無断で与えることになる。そうした行為は、著作者の同意無しには不可能。 上の逆 (BSD ライセンスなど、配布の制限が少ないライセンスのソフトウェアを GPL で配布) は可能? ライセンスで許可されている内容による。 GPLで許可する内容で持って元のライセンス文面を守れるのなら、そういうことも可能。しかし、そうでない場合(たとえば、宣伝条項付きの BSD ライセンス) は、GPLで配布すると許可された内容からはみ出すことになる。なので、使う前にライセンスの適合性を確認すること。 GNU Project が、そういうソフトウェアからコードを使って作ったソフトをGPLで配布しようとする人のためのライセンス文面の矛盾状況を載せているので見るといいかも。 MozillaみたいにGPL/LGPL/MPLとトリプルライセンスになっているソフトウェアの場合は、GPL/LGPLソフトウェアの開発にコードを自由に使うことができる。 なんで継承条項が必要なの? たとえば、XはもともとのXがフリーでも、多くのUNIXでプロプライエタリなものだった。 GPLは継承条項をつけることで、「そのソフトウェアがどんな状況でもフリーである」ことを保証する。
https://w.atwiki.jp/ohden/pages/223.html
Linuxの日時変更方法 dateコマンドを使う。 dateのみ打ってEnterで現在の日時を取得できる。 e.g.) date 2010年 6月 24日 木曜日 13 58 52 JST オプションに『-u』を付けると世界標準時。 引数を与えると、日時を設定できる。 e.g.) sudo date 0418100013.00 2013年 4月 18日 木曜日 10 00 00 JST ここで問題なのは引数で与える日時のformatが妙な事。 あと、ディストリビューション、Versionで結構違うみたい。 実行する前に『man date』ってやってformatを確認したほうが良い。 ちなみに、Ubuntu8.10鯖の環境だと... date MMDDhhmm[[CC]YY][.ss] みたい。『[]』で括られてるのは任意入力なので、省略可能。 MM 月 DD 日 hh 時 mm 分 CC YY 年 .ss 秒 更新日: 2010年06月24日 (木) 14時16分01秒
https://w.atwiki.jp/aerocats/pages/33.html
標準Linuxの/usr/local/bin/内にある。 HDDの初期化の役割を担う。 ユーザーの意思次第で、開発用LinuxをHDDに設置したりHDDブートするように設定する。 動作内容 スクリプト スクリプト詳細ExitWithError関数 スクリプト本文 デバイスの初期化 動作内容 HDDがマウントされていないことを確認。されていればエラー終了。 HDDがxfs形式でフォーマットされていないことを確認。されていればエラー終了。 /mnt/mtdにChangeMeDevHDDがあるかどうかを確認して以下を実行。 ある場合 HDDを/dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4の4つのパーティションに切り、それぞれをフォーマットする(マウントはしない)。 デバイス フォーマット形式 /dev/sda1 ext3 /dev/sda2 xfs /dev/sda3 swap /dev/sda4 xfs SetupDevEnv.shの実行 /mnt/mtdにhddrootfs.tar.gz、uImage.buffaloがあるかどうかを確認して以下を実行。 ある場合 /mnt/bootディレクトリを作成し、/dev/sda1をext3形式でマウントして、そこにuImage.buffaloをコピーする。 /mnt/rootfsディレクトリを作成し、/dev/sda2をxfs形式でマウントして、そこにhddrootfs.tar.gzを展開する。 デバイス マウントポイント マウントタイプ /dev/sda1 /mnt/boot ext3 /dev/sda2 /mnt/rootfs xfs /usr/local/bin/kuro_libを/mnt/rootfs/usr/local/binにコピーする。 ChangeMyUbootEnvがあればU-Boot環境変数を書き換える。なければそのまま終了する。 ない場合 エラー終了させる。 ない場合 HDDを/dev/sda1と1つだけのパーティション?に切りxfs形式でフォーマットする。 デバイス フォーマット形式 /dev/sda1 xfs /dev/sda1を/mnt/disk1にxfs形式でマウントする。 デバイス マウントポイント マウントタイプ /dev/sda1 /mnt/disk1 xfs /mnt/disk1のパーミッションを777にする。 スクリプト #!/bin/sh . /usr/local/bin/kuro_lib # $1 Error type {mounted | formatted} ExitWithError(){ miconapl -a led_set_cpu_mcon diag miconapl -a led_set_on_off diag miconapl -a led_set_brink diag miconapl -a bz_on on3off3 case $1 in mounted) echo "disk is already mounted!" /dev/console ;; formatted) echo "disk is already formatted!" /dev/console ;; esac sleep 5 miconapl -a bz_on miconapl -a led_set_brink off miconapl -a led_set_on_off off miconapl -a led_set_cpu_mcon off exit 1 } # Check point 1. disk is already mounted or not. IsMounted ${DISK1_DEV} ; [ $? = 1 ] ExitWithError mounted IsMounted ${DISK1_DEV}1 ; [ $? = 1 ] ExitWithError mounted IsMounted ${DISK1_DEV}4 ; [ $? = 1 ] EixtWithError mounted # Check point 2. disk is already formatted or not. XFS_FORMATTED=`dd if=${DISK1_DEV} bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}1 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}4 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted # OK! Disk is not mounted and not formatted. miconapl -a led_set_code_information 28 miconapl -a bz_on button if [ -e ${CHANGE_TO_DEVHDD_FILE} ] ; then fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition Format_EXT3 ${DISK1_DEV}1 Format_XFS ${DISK1_DEV}2 Format_XFS ${DISK1_DEV}4 mkswap ${DISK_DEV}3 /usr/local/sbin/SetupDevEnv.sh else fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition1 Format_XFS ${DISK1_DEV}1 MountShare ${DISK1_DEV} ${DISK1_MPT} fi miconapl -a led_set_code_information clear ~ # スクリプト詳細 ブロックごとに見てみる。 #!/bin/sh シェルの指定。shを指定している。 . /usr/local/bin/kuro_lib /usr/local/bin/kuro_libをサブシェルで実行している。 このkuro_lib内の InMounted関数 Format_EXT3関数 Format_XFS関数 MountShare関数 IsHavePartition関数 DISK1_DEV変数(=/dev/sda) DISK1_MPT変数(=/mnt/disk1) CHANGE_TO_DEVHDD_FILE変数(=/mnt/mtd/ChangeMeDevHDD) HEXDUMP変数(=/usr/bin/hexdump) を使用するためだ。 ExitWithError関数 関数の定義が始まる。なお、この項目は関数が以後の命令で呼び出された時に機能する内容であり、スクリプト実行と同時に実行されるわけではない。 # $1 Error type {mounted | formatted} ExitWithError(){ 第1引数はmountedかformattedというエラータイプだ、と解説されている。 miconapl -a led_set_cpu_mcon diag miconapl -a led_set_on_off diag miconapl -a led_set_brink diag miconapl -a bz_on on3off3 まずはどのタイプのエラーであれ(この関数が呼び出されている時点で何らかのエラーには間違いないため)、miconaplコマンドでLEDとブザーが共通の操作をされている。 詳しくはmiconaplコマンドで記すが、この4行で エラーLEDが点滅 ブザーがピッピッピと鳴る という動作になる。 case $1 in 先ほどの第1引数の内容によって以後の処理動作を分けている。 第1引数がmountedの場合 mounted) echo "disk is already mounted!" /dev/console ;; echoコマンド?で「disk is already mounted!」という一文がコンソールデバイスに出力されている。 これだけでこのcase文を抜ける。 第1引数がformattedの場合 formatted) echo "disk is already formatted!" /dev/console ;; echoコマンド?で「disk is already formatted!」という一文がコンソールデバイスに出力されている。 これだけでこのcase文を抜ける。 esac 以上の処理でmountedかformattedか、というcase文は終了する。 sleep 5 miconapl -a bz_on miconapl -a led_set_brink off miconapl -a led_set_on_off off miconapl -a led_set_cpu_mcon off 5秒間一時停止した後に、LEDとブザーの動作を止めている。 exit 1 終了ステータスに異常を表す「1」を指定。 } ExitWithError関数はここまで。 スクリプト本文 ここからがいわゆるInitDisk1.shのスクリプト本体だ。 # Check point 1. disk is already mounted or not. まずはチェックポイント1としてHDDがすでにマウントされているかいないかを以下で調査している。 サブシェルで走らせている/usr/local/bin/kuro_lib内の関数「IsMounted」を使うことになる。 ここで述べておく方が理解が容易なので、InitDisk1.shスクリプトの内容ではないが/usr/local/bin/kuro_lib内のIsMounted関数に触れておく。 IsMounted関数 /usr/local/bin/kuro_lib内の関数であり、引数を1つ付けさせて内容により戻り値として「0」か「1」を返す仕組みのようだ。 # $1 device of check target # retval # 1 device $1 is mounted. # 0 device $1 is not mounted. 第1引数はチェック対象のデバイスであり、このIsMounted関数が戻り値1を返せばそのデバイスはマウントされている、0を返せばされていないとする旨の解説だ。 IsMounted(){ MOUNTED=`grep $1 /proc/mounts` MOUNTEDという変数を用意しそこにgrep $1 /proc/mountsの結果を代入している。 $1とはIsMounted関数に付けられた第1引数であり、${DISK1_DEV}すなわち/dev/sdaを指す。 つまり、procコマンド?でマウント状態を調べたとき、/dev/sdaという文字が含まれるものを抽出していることになる。 その結果がMOUNTEDという変数に代入される。 if [ "${MOUNTED}" != "" ] ; then return 1 else return 0 fi このMOUNTED変数がカラでなければ戻り値1を返しIsMounted関数を終了、そうでなければ(カラであれば)0を返しIsMounted関数を終了する、という内容。 この作業で、/dev/sdaがマウントされているかどうかが判別できる。 return 0 上のいずれにもあてはまらなければ(実際にはあり得ないが)0を返す。 } IsMounted関数はここまで。 ここからまたスクリプト本文の解説に戻る。 IsMounted ${DISK1_DEV} ; [ $? = 1 ] ExitWithError mounted IsMounted ${DISK1_DEV}1 ; [ $? = 1 ] ExitWithError mounted IsMounted ${DISK1_DEV}4 ; [ $? = 1 ] EixtWithError mounted IsMounted関数に${DISK1_DEV}(=/dev/sda)、${DISK1_DEV}1(=/dev/sda1)、${DISK1_DEV}4(=/dev/sda4)という引数をそれぞれ付け、戻り値は0か1が返ってくるのを待ち、返って来た結果(戻り値「$?」)が1ならばExitWithError関数をmountedという引数を付けて実行している。 /dev/sdaもしくは/dev/sda1、/dev/sda4のいずれか一つでもマウントされていればInitDisk1.shはエラー終了してしまう、ということだ。 誤動作防止のためだと思われる。 これでチェックポイント1であるマウントされているかどうかの調査は終了する。 # Check point 2. disk is already formatted or not. 次にチェックポイント2としてHDDがすでにフォーマットされているかいないかを以下で調査している。 XFS_FORMATTED=`dd if=${DISK1_DEV} bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}1 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted XFS_FORMATTED=`dd if=${DISK1_DEV}4 bs=1 count=3` ; [ "${XFS_FORMATTED}" = XFS ] ExitWithError formatted 流れとしては XFS_FORMATTEDという変数を用意 そこに対象となるデバイスのフォーマット形式を代入 それがxfs形式かどうかを判別 xfs形式ならばExitWithError関数にformatted引数を付けてエラー処理 となる。 デバイスのフォーマットの調べ方だが、ここではddコマンドで行っている。 ddコマンドのofパラメータは出力先を指すが、今回これは指定しないのですなわち標準出力を指す。 xfs形式でフォーマットされたデバイス(パーティション?)は、 dd if=デバイス bs=1 count=3 とすると XFS3+0 records in 3+0 records out とコンソールには表示されるが、内部的にはXFSの3文字だけが出力されている(of=/mnt/disk1/dd.txtなどで確認してみるとはっきりする)。 ext3ではXFSは表示されないが、XFS形式のものをmkfs.ext3で上書きした場合はXFSと表示されてしまう。 パーティション?の先頭を0で埋めた後、領域を破壊した上でmkfs.ext3を実行しないと機械的にはXFSとみなされるので注意が必要だ。 上の命令は/dev/sda、/dev/sda1、/dev/sda4のいずれかがxfs形式ならばformattedという引数を付けてExitWithError関数を実行(すなわちエラー処理)する、という意味だ。 # OK! Disk is not mounted and not formatted. 以上、2つのチェックポイントを無事通過できると次の処理が待っている。 デバイスの初期化 miconapl -a led_set_code_information 28 miconapl -a bz_on button オレンジのLEDを点滅させ、ブザーをピっと鳴らす。 /mnt/mtdにChangeMeDevHDDがある場合 if [ -e ${CHANGE_TO_DEVHDD_FILE} ] ; then この「-e」という評価式は「存在すれば真」なので、CHANGE_TO_DEVHDD_FILE(/mnt/mtd/にChangeMeDevHDD)が存在すれば以下を実行、という意味になる。 なお、このChangeMeDevHDDとは、附属CD-ROM内にあるもので「HDDパーティション?を開発用に設定するための意思表示ファイル」となっている。中身は何もない。 この条件分岐のためだけにあり、あるかないかが問題なだけだ。 fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition /usr/local/bin/PartitionDefinitionに記載されている内容に従って/dev/sdaにパーティション?をきっていく。 記載された内容とは パーティション? サイズ パーティションタイプ /dev/sda1 50MB Linux /dev/sda2 3GB Linux /dev/sda3 128MB swap /dev/sda4 残り Linux となっている。 次に、きられたパーティション?に今度はファイルシステムを導入する。 まずは/usr/local/bin/kuro_lib内の関数「Format_EXT3」を説明する。 Format_EXT3関数 /usr/local/bin/kuro_lib内の関数であり、引数一つを受け取りそのデバイスをext3形式にフォーマットする関数のようだ。 # $1 target device to format Format_EXT3(){ 第1引数のデバイスをフォーマット対象とする。 echo "***** Starting to format $1 *****" 画面に「***** Starting to format 対象デバイス *****」と表示する。 mkfs.ext3 $1 mkfs.ext3コマンド?で第1引数のデバイスをext3形式でフォーマットする。 if [ $? -eq 0 ] ; then $?とは上のmkfs.ext3コマンド?の実行結果の終了ステータスを指しているのだが、これが「0」すなわち成功ならば次を実行、となっている。 echo "Format is succeeded without error." 画面に「Format is succeeded without error.」と表示する。つまり「フォーマットはエラーもなく成功した。」と表示している。 else $?が「0」でなければ、つまりフォーマットに失敗しているのならば次を実行。 return 1 exit 1 fi return 1とは、関数の戻り値を1に明示的に指定してFormat_EXT3関数を終了しているわけだが、このスクリプト内で戻り値を具体的に利用する様子は見受けられないので意味はないだろう。 /usr/local/bin/kuro_libは様々なスクリプトで利用されているライブラリ的なスクリプトなので、どこかで利用するものかもしれない。 exit 1も同じような意味合いだが、終了ステータスを「1」(異常)に設定してスクリプト(/usr/local/bin/kuro_lib)を終了するようにしている。 return 0 戻り値「0」をセットしFormat_EXT3関数を抜ける。 } Format_EXT3関数はここまで。 次に/usr/local/bin/kuro_lib内の関数「Format_XFS」を説明する。 Format_XFS関数 /usr/local/bin/kuro_lib内の関数であり、引数一つを受け取りそのデバイスをxfs形式にフォーマットする関数のようだ。 # $1 target device to format. Format_XFS(){ 第1引数のデバイスをフォーマット対象とする。 KEY=`dd if=$1 bs=1 count=3` KEYという変数を用意し、そこにdd if=$1 bs=1 count=3の結果を代入する。 先ほど検証したようにxfs形式のデバイスに対してこのコマンドを使うと「XFS」と出力される。 if [ "${KEY}" = "XFS" ] ; then KEYの値がXFSならば次を実行、という意味だ。つまりここは対象デバイスのフォーマット形式がxfs形式かどうかを条件分岐にしている。 . /etc/melco/info /etc/melco/infoをサブシェルで走らせているが、標準Linuxにはこのファイルは存在しない。 製品仕様書にも初期化SWの項目に 内蔵HDD(/dev/sda)が既にxfs形式でフォーマットされている場合、フォーマットは行われない。但し、/etc/melco/info内、force_format=yesとすることで、xfsでフォーマットされている/いないにかかわらず、フォーマットを行うようにすることができる。 と記載されている。強制フォーマットの機能を使うのであれば自分で/etc/melco/infoを用意するしかない。 if [ "${force_format}" = "yes" ] ; then /etc/melco/info内の「force_format」項目が「yes」となっていれば以下を実行。 echo "Disk (or partition) is looks like already formatted." echo "If you stop format, Press Ctrl+C in 10 seconds!!!" 画面に「Disk (or partition) is looks like already formatted.If you stop format, Press Ctrl+C in 10 seconds!!!」と表示。 「ディスク(あるいはパーティション?)は既にフォーマットされているようです。フォーマットを中止する場合は10秒以内にCtrl+Cを押してください」という意味。 COUNTER=10 COUNTERという変数を用意し、そこに10を代入。 echo -n "waiting " 画面に「waiting」と表示。-nオプションは「テキストの行末で改行しない」という意味。 while [ ${COUNTER} -gt 0 ] COUNTER変数が0より大きければdo~doneの内容を繰り返す。 do echo -n "." sleep 1 COUNTER=$((${COUNTER} - 1)) done 「waiting」の行末に「.」を表示し、1秒待った後COUNTER変数から1を引く、という内容。 先のwhile条件から、1を引いた結果が0よりも大きければ同じことを繰り返す、ということなので、これで結果的に10秒間待機することになる。 「.」を1秒ごとに表示させるためにwhile文を使ったのだろう。 echo "" echo "OK, go on formatting." echoで空白を表示、これは改行させる目的で、次に「OK, go on formatting.」を表示させている。 else /etc/melco/info内の「force_format」項目が「yes」となっていなければ以下を実行。 return 0 戻り値を「0」に設定しFormat_XFS関数を抜ける。つまりこの関数内の以後の命令は実行しない。 fi fi if [ "${force_format}" = "yes" ]を抜け、すぐ次にif [ "${KEY}" = "XFS" ]も抜けている。 echo "***** Cleaning Disk partition information *****" 画面に「***** Cleaning Disk partition information *****」と表示。 dd if=/dev/zero of=$1 bs=512 count=1 ddコマンドを使ってデバイスの先頭から512バイトに「0」を書き込んでいる。 要するにそのデバイス(パーティション?)を先頭から512バイト分データを消去している。 echo "***** Starting to format $1 *****" 画面に「***** Starting to format 対象デバイス *****」と表示。 mkfs.xfs $1 -f デバイスをmkfs.xfsコマンド?でxfs形式にフォーマットしている。-fは上書きオプション。 if [ $? -eq 0 ] ; then 終了ステータスが0であれば、つまり上のmkfs.xfsコマンド?がエラーでなければ以下を実行。 echo "Format is succeeded without error." 画面に「Format is succeeded without error.」と表示。 else mkfs.xfsでエラーが発生すれば return 1 exit 1 fi 戻り値を1、終了ステータスを1に設定して終了。 return 0 戻り値を0に設定しFormat_XFS関数を抜ける。 } Format_XFS関数はここまで。 これら関数を使ってファイルシステムを導入する命令が以下。 Format_EXT3 ${DISK1_DEV}1 Format_XFS ${DISK1_DEV}2 Format_XFS ${DISK1_DEV}4 mkswap ${DISK_DEV}3 わかりやすく表にすれば デバイス フォーマット形式 /dev/sda1 ext3 /dev/sda2 xfs /dev/sda3 swap /dev/sda4 xfs という意味だが、 mkswap ${DISK_DEV}3 は上のパーティション?の様子からすると mkswap ${DISK1_DEV}3 でなければならないはずだ。開発用Linuxのfstabで/dev/sda3をswapでマウントしようとしても、フォーマットが完了していないため失敗するだろう。 /usr/local/sbin/SetupDevEnv.sh そして、/usr/local/sbin/SetupDevEnv.shを実行する。詳細はSetupDevEnv.shの項目で説明する。 その後、miconapl -a led_set_code_information clearを実行してInitDisk1.shを終了する。 /mnt/mtdにChangeMeDevHDDがない場合 else CHANGE_TO_DEVHDD_FILE(/mnt/mtd/にChangeMeDevHDD)が存在しなければ以下を実行。 fdisk ${DISK1_DEV} /usr/local/bin/PartitionDefinition1 /dev/sdaを/usr/local/bin/PartitionDefinition1に従ってパーティション?分割作業する。 パーティション? サイズ パーティションタイプ /dev/sda1 すべて Linux という内容だ。 Format_XFS ${DISK1_DEV}1 Format_XFS関数で/dev/sda1をxfs形式にフォーマット。 MountShare ${DISK1_DEV} ${DISK1_MPT} MountShare関数に 第1引数 /dev/sda 第2引数 /mnt/disk1 という引数を付けて実行させている。 ここで/usr/local/bin/kuro_lib内のMountShare関数を説明する。 MountShare関数 /usr/local/bin/kuro_lib内の関数。4つまでの引数に対応し、3つの戻り値を設定できる。 # $1 target device to mount. # $2 target mountpoint of $1. # $3 File system of target device(default is xfs). # $4 Mounted device permission(default is 777). MountShare(){ 第1引数にマウントする対象デバイス、第2引数に対象デバイスのマウント先、第3引数に対象デバイスのファイルシステム(初期値はxfs形式)、第4引数にマウントしたデバイスのパーミッション(初期値は777)、という解説。 # ret 0 this is no partition disk. # ret 1 this is nand share type partition # ret 2 this is developkit type partition (maybe) MountShare関数の戻り値ではない。IsHavePartition関数からの戻り値を説明している。 戻り値「0」で「パーティション?が存在しないディスクです」、「1」で「NANDフラッシュ共有時(つまり標準Linux時)のパーティション?です」、「2」で「(おそらく)開発用Linux時のパーティション?です」と、それぞれ意味する。 if [ "$1" = "/dev/sda" -o "$1" = "/dev/sdb" ] ; then 第1引数が/dev/sdaあるいは/dev/sdbであれば以下を実行。 IsHavePartition $1 /usr/local/bin/kuro_lib内のIsHavePartition関数に第1引数を付けて実行している。 ここでIsHavePartition関数を説明する。 IsHavePartition関数 # $1 target device to check partition 第1引数にパーティション状態をチェックする対象デバイス、という解説。 # ret 0 this is no partition disk. # ret 1 this is nand share type partition # ret 2 this is developkit type partition (maybe) 戻り値「0」で「パーティション?が存在しないディスクです」、「1」で「NANDフラッシュ共有時(つまり標準Linux時)のパーティション?です」、「2」で「(おそらく)開発用Linux時のパーティション?です」と、それぞれ意味する。 IsHavePartition(){ if [ -x ${HEXDUMP} ] ; then HEXDUMP変数(=/usr/bin/hexdump)に-xオプションを付けて条件としている。-xオプションは「存在し、かつ実行可能なら真」という意味なので、ここでは「/usr/bin/hexdumpが存在し、かつ実行可能なら次を実行」という意味になる。 DISK_1_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "1p"|awk {print $10} ` DISK_1_PART_TAILという変数を用意し、そこにhexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "1p"|awk {print $10} という内容を代入している。 パイプで3つの命令がつながっているが、それぞれに分けて考えてみる。 hexdump hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 hexdumpコマンドを使っている。先頭から446バイト読み飛ばした所から64バイト分だけを読み込み、それを「8/1 "%02x " 2/4 "%10d " "\n"」というフォーマットで第1引数のデバイスを表示する、という意味になる。 HDDの先頭512バイトはMBR領域となっており、その中の先頭446バイトから64バイトはパーティションテーブルが4エントリ分(1エントリ16バイト)ある。 つまりここでは4つのパーティションテーブルを読み込んだことになる。 次に、詳細はhexdumpコマンドで説明するが、「繰り返し回数/バイト数 "フォーマット"」の羅列がhexdumpコマンドのフォーマット形式なので、この場合は 8回繰り返し/1バイト "フィールド幅2(2桁表示で満たない桁は0で表示)で16進数変換" 2回繰り返し/4バイト "フィールド幅10(10桁表示で満たない桁は空白で表示)で10進数変換" 改行 という内容になる。 つまり、「1バイトづつ8回、4バイトづつ2回、計16バイトを10回にわけて読み込み、それを4行に出力」という内容だ。 パーティションテーブルを1つ読み込んでは改行し、64バイト分すべてを16バイトづつ4行10フィールドで表現している。 4つのパーティション?を切ったHDDで試してみると以下の結果を得た。 00 01 01 00 83 fe 3f 06 63 112392 00 00 01 07 83 fe 7f 74 112455 5879790 00 00 41 75 82 fe 7f 85 5992245 273105 00 00 41 86 83 fe ff ff 6265350 150031035 sed sed -n "1p" 「-n」オプションでhexdumpコマンドから受け取った結果の1行目(pが行を表す)だけを抽出している。 ここの「1p」が「2p」「3p」「4p」と変化していくのは、それぞれパーティションテーブルを1から4まで読み、該当パーティションテーブル以外を破棄している。 先ほどの例で試すと 00 01 01 00 83 fe 3f 06 63 112392 という結果を得る。 awk awk {print $10} sedコマンド?から受け取った行の第10フィールドの値を出力している。 第10フィールドはLBAのパーティション?総セクター数(4バイト)を意味する。 つまり、最終的にDISK_1_PART_TAIL変数に代入したい値とは、各パーティション?の総セクター数であることがわかる。これはhexdumpコマンドで10進数にされている。 DISK_2_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "2p"|awk {print $10} ` DISK_3_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "3p"|awk {print $10} ` DISK_4_PART_TAIL=`hexdump -s 446 -n 64 -e 8/1 "%02x " 2/4 "%10d " "\n" $1 | sed -n "4p"|awk {print $10} ` 先ほどと同様な処理を各パーティション?ごとにDISK_パーティション番号_PART_TAILという変数に代入している。 例で試すと 112392 という結果。 総セクター数が0であればそのパーティション?は存在しない、という意味になる。 if [ "${DISK_1_PART_TAIL}" -ne 0 -a "${DISK_2_PART_TAIL}" -eq 0 -a "${DISK_3_PART_TAIL}" -eq 0 -a "${DISK_4_PART_TAIL}" -eq 0 ] ; then 第1パーティションの総セクター数が0ではない かつ第2~4パーティションの総セクター数が0 の場合に以下を実行する。 return 1 戻り値「1」を設定し関数を抜ける。 つまり「this is nand share type partition」ということになる。 elif [ "${DISK_1_PART_TAIL}" -ne 0 -a "${DISK_2_PART_TAIL}" -ne 0 -a "${DISK_3_PART_TAIL}" -ne 0 -a "${DISK_4_PART_TAIL}" -ne 0 ] ; then 第1~4パーティションの総セクター数が0ではない の場合に以下を実行。 return 2 戻り値「2」を設定し関数を抜ける。 つまり「this is developkit type partition (maybe)」ということだ。 else それ以外の場合、つまり 第1パーティションの総セクター数が0 の場合に以下を実行。 return 0 戻り値に「0」を設定し関数を抜ける。 つまり「this is no partition disk.」ということになる。 fi パーティション?総セクター数の条件分岐を終了する。 else 「/usr/bin/hexdumpが存在し、かつ実行可能」ではない場合は以下を実行、という意味。 return 0 戻り値に「0」を設定し関数を抜ける。 つまり「this is no partition disk.」ということになる。 fi 「/usr/bin/hexdumpが存在し、かつ実行可能」という条件分岐を終了する。 return 0 いずれにもあてはまらなかった場合、戻り値に「0」を設定し関数を抜ける。 つまり「this is no partition disk.」ということになる。 } IsHavePartition関数はここまで。 ここからまたMountShare関数に戻る。 RET=$? RETという変数を用意し、そこにIsHavePartition関数の戻り値を代入。 [ "${RET}" -eq 1 ] TARGET_DEV=${1}1 [ "${RET}" -eq 2 ] TARGET_DEV=${1}4 [ "${RET}" -eq 0 ] TARGET_DEV=${1} 戻り値が1ならば、TARGET_DEV変数にMountShare関数に付けた第1引数(if文の関係上、/dev/sdaか/dev/sdb)の第1パーティション?を代入する。 戻り値が2ならば、TARGET_DEV変数にMountShare関数に付けた第1引数(if文の関係上、/dev/sdaか/dev/sdb)の第4パーティション?を代入する。 戻り値が0ならば、TARGET_DEV変数にMountShare関数に付けた第1引数(if文の関係上、/dev/sdaか/dev/sdb)を代入する。 というように処理している。 else MountShare関数に付けた第1引数が/dev/sdaでも/dev/sdbでもなければ以下を実行。 TARGET_DEV=$1 TARGET_DEV変数にMountShare関数に付けた第1引数を代入。 fi MountShare関数に付けた第1引数が/dev/sdaか/dev/sdbか、という条件分岐を抜ける。 IsMounted ${TARGET_DEV} IsMounted関数に第1引数としてTARGET_DEV変数を渡す。先ほど説明したとおり、戻り値「1」で「device is mounted.」、戻り値「0」で「device $1 is not mounted.」という意味になる。 if [ $? = 1 ] ; then 戻り値が「1」ならば、つまり「device is mounted.」という意味ならば次を実行。 echo "${TARGET_DEV} is already mounted." 画面上に「対象デバイス is already mounted.」と表示。 return 1 戻り値「1」を設定しMountShare関数を抜ける。 fi IsMounted関数の戻り値による条件分岐を抜ける。 if [ "$3" = "" ] ; then MountShare関数の第3引数が何もなければ以下を実行する。 FS=xfs FSという変数を用意し、そこにxfsを代入する。 else MountShare関数の第3引数に何かあれば以下を実行する。 FS=$3 FSという変数を用意し、そこにその第3引数を代入する。 fi MountShare関数の第3引数の有無の条件分岐を抜ける。 if [ "$4" = "" ] ; then MountShare関数の第4引数が何もなければ以下を実行する。 PERMISSION=777 PERMISSIONという変数を用意し、そこに777を代入する。 else MountShare関数の第4引数に何かあれば以下を実行する。 PERMISSION=$4 PERMISSIONという変数を用意し、そこにその第4引数を代入する。 fi MountShare関数の第4引数の有無の条件分岐を抜ける。 echo "Mounting ${TARGET_DEV} on $2 as a ${FS} file system." 画面上に「Mounting 対象デバイス(MountShare関数の第1引数) on マウントポイント( MountShare関数の第2引数) as a ファイルシステムタイプ(MountShare関数の第3引数) file system.」と表示する。 mount -t ${FS} ${TARGET_DEV} $2 実際に設定した変数の値をもとにmountコマンドでマウントする。 case $? in mountコマンドの終了ステータスをもとに実行内容を変える。 0) 終了ステータス「0」(正常)の場合 chmod ${PERMISSION} $2 echo "Success." ;; chmodコマンド?で設定したパーミッションでマウントポイントのデバイスを指定し、画面上に「Success.」と表示してcase文を抜ける。 *) 終了ステータス「1」(異常)の場合 echo "Failed." return 1 ;; 画面上に「Failed.」と表示して、戻り値「1」を設定しMountShare関数を抜ける。 esac case文はここまで。 echo "" return 0 画面上を改行して戻り値「0」を設定しMountShare関数を抜ける。 } MountShare関数はここまで。 fi CHANGE_TO_DEVHDD_FILE(/mnt/mtd/にChangeMeDevHDD)の有無の条件分岐を抜ける。 miconapl -a led_set_code_information clear LEDの点滅を止める。
https://w.atwiki.jp/akinobu1217/pages/7.html
ログを監視するプログラム http //www.atmarkit.co.jp/flinux/rensai/root04/root04a.html
https://w.atwiki.jp/linux-memo/pages/14.html
トップページ yum RPM Installer/Updater rpm yum-3.2.24-2.fc11(noarch) srpm yum-3.2.24-2.src.fc11(noarch) グループ システム ライセンス GPLv2+ 機能 YumとはRPMパッケージを自動的にダウンロードまたはアップデートするユーティリティである。他に必要なファイルを判断して自動的にダウンロードする場合もある。 Yum is a utility that can check for and automatically download and install updated RPM packages. Dependencies are obtained and downloaded automatically prompting the user as necessary. HOME Yellowdog updater modified サイズ 3.1Mb GUI gpk-application 設定ファイル /etc/yum.conf 設定記述方法は man yum.conf 両方同時に開いてみてください。man yum.conf の記述に従い[main]より下方に向かい/etc/yum.confが記述されているのが分かります。 log /var/log/yum.log 使用法 インストールされているソフトのリスト # yum list installed アップデート可能なパッケージを検索する # yum check-update パッケージ名 更新可能な全てのパッケージの更新をする # yum update 特定のアプリをインストールするには # yum install パッケージ名 削除するには # yum remove パッケージ名 パッケージグループのインストール # yum grouplist Fedora Eclipse Java Ruby X Window System LXDE OCaml XFCE # yum groupinstall パッケージグループ名 参考 Linux Lovers yumの使い方
https://w.atwiki.jp/aerocats/pages/22.html
玄箱PROの本体背面にある赤いボタンがRESETボタンだ。 動作内容 HDDの初期化シリアルコンソールでのログ telnetでのログ パーティションの状態 動作を追跡する エラー 動作内容 標準Linuxでのこのボタンの動作順序は以下となる。 システム起動時に/etc/init.d/rcSが/etc/init.d/Kevent.shを実行する /etc/init.d/Kevent.shが/usr/local/sbin/Keventdを起動する /usr/local/sbin/Keventdはデーモンとして常駐しカーネルイベントを参照、変化があっても無くても常にその結果を/usr/local/bin/KeventHandller.shに渡す その都度呼び出された/usr/local/bin/KeventHandller.shはLANの状態と、miconaplコマンドで電源ボタン・RESETボタンを監視しており、RESETボタンを押されたことを認識すると/usr/local/bin/InitDisk1.shを実行する これらの動作は標準Linuxで完備されており、独自にユーザーランドを構築した場合はこの機能は失われる。 必要であれば導入するしかない。 HDDの初期化 Linuxの形式に初期化されていなければRESETボタンの長押しでHDDの初期化が開始される。 シリアルコンソールでのログ ~ # SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda sda1 SCSI device sda 156301488 512-byte hdwr sectors (80026 MB) SCSI device sda drive cache write back sda sda1 XFS mounting filesystem sda1 ~ # telnetでのログ telnetではコンソール上には何も表示されない。ある程度のタイミングを見計らってmountコマンドででも確認すればいいだろう。 パーティションの状態 fdiskコマンド?で確認してみる。 ~ # fdisk /dev/sda The number of cylinders for this disk is set to 9729. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help) p Disk /dev/sda 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 9729 78148161 83 Linux Command (m for help) パーティション?は1つだけ切られている。デバイス名は「/dev/sda1」となる。 次にmountコマンドで確認する。 ~ # mount | grep sda1 /dev/sda1 on /mnt/disk1 type xfs (rw) ~ # xfs形式で/mnt/disk1にマウントされている。 動作を追跡する エラー RESETボタンを長押しすることで発生するエラーには以下のパターンがある。 KeventHandller.sh(InitDisk1.sh)が反応する既定のエラーだけを列記するので、独自に記述したシェルスクリプトなどは考慮しない。 (エラー)disk is already mounted! (エラー)disk is already formatted! (エラー)RESETボタンでの初期化中、INFO LEDが点滅して作業が中断する
https://w.atwiki.jp/shirayuu/pages/40.html
言語系java C言語系 (gcc) ruby python R scilab gnuplot インプットメソッドUIM SCIM ネット系JD gftp FileZilla synergy xvnc4viewer 画像系comix gpicview ImageMagik 音楽プレイヤー、動画プレイヤーaudacious Songbrid Totem mplayer VLC xine その他convmv 右クリックで端末を開くを表示する trash awesome Adobe Flash Plugin EUC-JP、Shift-JIS 環境の追加 言語系 java $ sudo apt-get install sun-java6-jdk 註) 同意するか聞かれる C言語系 (gcc) $ sudo apt-get install build-essential ruby $ sudo apt-get install ruby irb $ sudo apt-get install ruby-elisp 註) ver 1.9 が欲しい人は明示する必要あり。 参考ページ オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル python $ sudo apt-get install python $ sudo apt-get install python-mode 参考ページ Python チュートリアル Python 和訳ドキュメント R $ sudo apt-get install r-recommended $ sudo apt-get install ess 参考ページ R-Tips 統計処理ソフトウェアRについてのTips 参考書籍 註) PDFファイル、直リン 題名 R による統計解析の基礎 http //phi.med.gunma-u.ac.jp/statlib/stat.pdf scilab $ sudo apt-get install scilab gnuplot $ sudo apt-get install gnuplot $ sudo apt-get install gnuplot-mode 普通に apt でインストールするだけでは、emacs23 では、gnuplot-mode が起動しなかった。 というわけで以下のコマンドで emacs23 でも使えるようにする。 $ cd /usr/share/emacs23/site-lisp $ sudo ln -s ../../emacs22/site-lisp/gnuplot-mode . インプットメソッド UIM Linux には様々なインプットメソッドがありますが、UIM が一番使いやすいと思ってます。 $ sudo apt-get install mlterm-im-uim uim uim-anthy uim-el uim-gtk2.0 上記コマンドで UIM まわりの便利なパッケージをインストールする。 $ uim-pref-gtk から、UIM の設定ができる。 インプットメソッドを UIM へと変更するには、 ~/.xinitrc,~/.xsession,~/.xprofile に # UIM export export XMODIFIERS= @im=uim export GTK_IM_MODULE=uim export QT_IM_MODULE=uim export XIM_PROGRAM=/usr/bin/uim-xim # UIM start toolbar uim-xim uim-toolbar-gtk # ツールバーをデスクトップ上に表示させる uim-toolbar-gtk-systray # ツールバーをタスクトレイ上に表示させる とでも記述しておけば UIM が起動する。ツールバーをデスクトップ上に表示させたくなければ、uim-toolbar-gtk の先頭に# を打ち込めば良い。 SCIM SCIM は、ubuntu 9.04 まで使われていたインプットメソッド $ sudo apt-get install scim scim-anthy scim-bridge-client-gtk scim-bridge-client-qt4 scim-tomoe mlterm-im-scim 上記コマンドでSCIM まわりのパッケージをインストール $ scim-setup から、SCIM の設定を行う。 ネット系 JD 2ch ブラウザ。様々な 2chブラウザ がありますが、一番インストールが簡単だった。 $ sudo apt-get install jd gftp ftp クライアントソフト。SSH も対応。 $ sudo apt-get install gftp FileZilla ftp クライアントソフト。SSH も対応。 Windows版もあるので、使いやすかったらWindowsでも使ってみるといいかも。 $ sudo apt-get install filezilla synergy $ sudo apt-get install synergy xvnc4viewer VNC サーバを閲覧するソフト $ sudo apt-get install xvnc4viewer 画像系 comix いわゆる、コミックビューアー。 $ sudo apt-get install comix gpicview $ sudo apt-get install audacious ImageMagik 様々な画像の変換とか加工とかできる。 $ sudo apt-get install imagemagick 以下のコマンドで壁紙を変更できます。 $ display -window root ファイル名 音楽プレイヤー、動画プレイヤー Linux にも様々な音楽プレイヤー、動画プレイヤーがあります。 audacious 音楽プレイヤー。 $ sudo apt-get install audacious2 Songbrid itunes風の音楽プレイヤー http //getsongbird.com/ からダウンロードしてインストール $ cd tmp $ wget http //download.songbirdnest.com/installer/linux/i686/Songbird_1.2.0-1146_linux-i686.tar.gz $ tar zxvf Songbird_1.2.0-1146_linux-i686.tar.gz とこんな感じで解凍する。あとは適当な場所に置けばよい。 Songbird ディレクトリにあるsongbird を実行する。 $ ./songbird で実行できます。 Totem 最初から入ってる動画プレイヤー。なかなか使いやすい。 $ sudo apt-get install totem mplayer 動画再生と音楽再生 $ sudo apt-get install mplayer スキンとかもついでにインストール $ sudo apt-get install mplayer-fonts mplayer-skin mplayer-skin-blue mplayer-skins VLC VLC Player これも、様々なOS でサポートされている動画プレイヤーとして有名。 $ sudo apt-get install vlc xine xine。 これも動画プレイヤー $ sudo apt-get install xine-ui その他 convmv ファイル名の文字コードを変換するパッケージ。 URL http //www.geocities.jp/code_air_edge/HP/convmv.html 上記URL が大変参考になります。 $ sudo apt-get install convmv 右クリックで端末を開くを表示する $ sudo apt-get install nautilus-open-terminal trash ゴミ箱に送るコマンド $ sudo apt-get install trash-cli awesome タイル型ウインドウマネージャーと呼ばれるもの。 gnome, fluxbox など様々なウインドウマネージャーがあるけど、それとは一風変わったウインドウマネージャー。ウインドウの位置、大きさなど賢く設定してくれます。 $ sudo apt-get install awesome Adobe Flash Plugin ニコニコ動画、youtube、各種サイトに使用されている Flash を見るために必要なプラグイン。 $ sudo apt-get install flashplugin-nonfree Firefox では、アドレスバーにabout plugins と入力すればインストールされる各種プラグインを確認できます。 EUC-JP、Shift-JIS 環境の追加 /var/lib/locales/supported.d/ja,/var/lib/locales/supported.d/local に以下の文面を追加します。 ja_JP.EUC-JP EUC-JP ja_JP.SHIFT-JIS SHIFT-JIS ja_JP.SHIFT_JIS SHIFT_JIS 次に、以下のコマンドを実行して文字コード環境を認識させます。 $ local-gen そして、次のコマンドで正しく認識されたのかを確認してください。 $ locale -a | grep ja 正しく認識されていると以下の文面が見つかると思います ja_JP.eucjp # EUC-JP ja_JP.shiftjis # Shift-jis ja_JP.sjis # Shift-jis ja_JP.utf8 # UTF-8
https://w.atwiki.jp/linux2ch/pages/83.html
書籍 Linux 関連のオススメ書籍を紹介するページ。雑誌はこちらです。 書籍 Linux, UNIX全般 図解でわかるLinux環境設定のすべて 新 The UNIX Super Text UNIXプログラミング環境 Linux 入門、解説 LINUX怒濤のQ A ネットワーク 怒濤のLinuxネットワーク ソフトウェア 入門 vi Linux、オープンソース それがぼくには楽しかったから 伽藍とバザール—オープンソース・ソフトLinuxマニフェスト フリーソフトウェアと自由な社会-Richard M. Stallmanエッセイ集 UNIXという考え方—その設計思想と哲学 関連スレッド ※価格は、税込み定価を表示しています。特別定価・改定・誤記などにより値段が変動していることがあります。 Linux, UNIX全般 図解でわかるLinux環境設定のすべて 「図解でわかる」シリーズで人気の著者 西村めぐみ氏の著書。 図解でわかるLinux環境設定のすべて レビュー記事でも好評なようです。 内容は環境設定だけでなく Linux全般に渡っているので、タイトルの付け方が読者の関心を引かず損をしているのかもしれません。 目次。 (西村めぐみ著 / 日本実業出版社 / 2,625円 / ISBN 4-534-03794-5 ) 新 The UNIX Super Text 新 The UNIX Super Text (上) / 新 The UNIX Super Text (下) UNIX 全般についてのマニュアルみたいなものなので、持っていてもいいかなと思います。 (山口和紀+古瀬一隆 監修 / 技術評論社 / (上) 3,654円 ISBN 4-7741-1682-3 / (下) 3,864円 ISBN 4-7741-1683-1 ) UNIXプログラミング環境 UNIXを生んだベル研究所の2人の巨匠が、UNIXの効果的な使い方を紙上で披露した本。簡にして要を得た、練られた説明が、そのままシンプル・イズ・ビューティフルというUNIXの設計思想を表している。難易度順の構成になっているので、入門者でも端末画面で実例を試しながら読み進められる。とくにシェルの入門書として良くできていて、sh系のシェルが普及するきっかけになった。5章まで読めば日常作業はこなせる。6章以降は本格的なプログラミングの話になるが、5章まででも十分に元が取れる。 (B.カーニハン + R.パイク著 / アスキー・メディアワークス / ISBN 978-4-87148-351-3 ) Linux 入門、解説 LINUX怒濤のQ A ここの FAQ のような Linux 初心者が思う疑問を Q A や Tips で紹介している本。発行年が2000年と少し古いのを差し引いても Red Hat 系を使っている人には役立つと思います。 レビュー記事。紹介・訂正情報など。 (ぱぱんだ著 / ISBN 4-87193-735-6 ) ネットワーク 怒濤のLinuxネットワーク ネットワークの勉強のとっかかりにはいいんじゃないかと思われ。紹介・訂正情報など。 (ぱぱんだ著 / ISBN 4-87193-798-4 ) ソフトウェア 入門 vi 御存じ vi の入門本。広く流通している Vim については最終章でのみとりあげられているが、基本コマンドはきちんと押えられている良書。 特に6章「一括置換」は必読。 (Linda Lamb、Arnord Robbins 著 福崎 俊博 訳 / オライリー・ジャパン / 2,625円 / ISBN 4-87311-083-1 ) Linux、オープンソース それがぼくには楽しかったから 原題は "Just for Fun"。自分の生い立ちや家族、Linux について当人が語った唯一の自伝。 訳におかしなところがあったりするけど、Linus さんが意外と普通な人というのが分かっておもしろいよ。 (リーナス・トーバルズ/デイビッド・ダイヤモンド著 中島 洋監修 風見 潤訳 / 小学館プロダクション / ISBN:4-7968-8001-1 ) 伽藍とバザール—オープンソース・ソフトLinuxマニフェスト 「オープンソース三部作」と言われる本。Eric S. Raymond が Linux や fetchmail の開発などを通してオープンソース開発の根源を探る。 この翻訳自体が OpenContent で発行されているため、山形 浩生のサイトで日本語訳が全文読めます。 (Eric Steven Raymond 著 山形 浩生 訳 / 光芒社 / ISBN 4-8954-2168-6 ) フリーソフトウェアと自由な社会-Richard M. Stallmanエッセイ集 GNU の創始者ストールマンが GNU および Free Software について語ったエッセイ、講演をまとめた本。著作権、特許、自由社会などについて、その思想を明らかにします。 (Richard M. Stallman 著 長尾 高弘 訳 / アスキー・メディアワークス / 3,360円 / ISBN:4-7561-4281-8 ) UNIXという考え方—その設計思想と哲学 Unix系以外から来たプログラマに是非読んでほしい本です。UNIXは『OS』ではない。それは『考え方』である。ブックレビュー。関連 Wiki。 (Mike Gancarz 著 芳尾 桂 訳 / オーム社 / 1,680円 / ISBN 4-2740-6406-9 ) 関連スレッド Linux板 Linux 推薦図書/必読書/推薦雑誌/推薦HP 2 http //pc11.2ch.net/test/read.cgi/linux/1172765114/ Linux 推薦図書/必読書/推薦雑誌/推薦HP http //pc5.2ch.net/test/read.cgi/linux/1065059126/ Linuxの薦めの本 2冊目 http //pc.2ch.net/test/read.cgi/linux/1054365754/ Linuxの薦めの本 http //pc.2ch.net/test/read.cgi/linux/1000166968/ UNIX板 参考になる書籍part2 http //pc5.2ch.net/test/read.cgi/unix/1032192130/ 参考になる書籍 http //pc.2ch.net/unix/kako/941/941565661.html
https://w.atwiki.jp/hama170628/pages/96.html
iscsi-targetを構築する 事前準備 kernel-develとopensslをインストールする。 #yum -y install kernel-devel* #yum -y install openssl* iscsitargetのダウンロードとインストール 以下のサイトからダウンロードします。 (2010/12/30時点ではiscsitarget-1.4.20.2.tar.gz) http //sourceforge.net/projects/iscsitarget/files/ rpmパッケージを作成します。 #rpmbuild -ta iscsitarget-1.4.20.2.tar.gz 以下のrpmパッケージが出来上がります。 /usr/src/redhat/SRPMS/iscsitarget-1.4.20.2-1.src.rpm /usr/src/redhat/RPMS/i386/iscsitarget-1.4.20.2-1.i386.rpm /usr/src/redhat/RPMS/i386/kmod-iscsitarget-1.4.20.2-1_2.6.18_194.el5.i386.rpm rpmコマンドでパッケージをインストールします。 #rpm -ivh kmod-iscsitarget-1.4.20.2-1_2.6.18_194.el5.i386.rpm #rpm -ivh iscsitarget-1.4.20.2-1.i386.rpm インストールが完了したらiscsitargetを起動します。 #service iscsi-target start ターゲットの設定 /etc/iet/ietd.confを編集し、targetの設定を行います。 Target iqn.2010-12.jp.test.iscsi storage.test.disk1 Lun 0 Path=/dev/sde,Type=blockio MaxConnections 1 ※Targetの指定は、iqn.[ドメイン取得年]-[ドメイン取得月].[ドメイン名 (逆順)] [任意の識別子]です。 実際には名前解決できなくても支障はありません。 ※/dev/sdeは、初期化やマウントをしておく必要はありません。 以下のようにイメージで指定することも可能です。 Target iqn.2010-12.jp.test.iscsi storage.test.disk1 Lun 0 Path=/var/iscsi/disk1.img,Type=fileio MaxConnections 1 対象のイメージファイルを作成しておきます。 #dd if=/dev/zero of=/var/iscsi/disk1.img bs=1G count=1 設定が終わったらリスタートします。 #service iscsi-target restart iscsi-initiatorを構築する パッケージのインストール パッケージをインストールします。 # yum -y install iscsi-initiator-utils サービスを起動します。 # service iscsi start ターゲットへの接続 ターゲット(ここでは192.168.1.43)に接続し、ターゲットの情報を取得してデータベースに登録します。 # iscsiadm -m discovery -t sendtargets -p 192.168.1.43 192.168.1.43 3260,1 iqn.2010-12.jp.test.iscsi storage.test.disk1 (先ほど設定したターゲットの情報が表示されます) ターゲットにログインします。 #iscsiadm -m node -T iqn.2010-12.jp.test.iscsi storage.test.disk1 -p 192.168.1.43 --login Logging in to [iface default, target iqn.2010-12.jp.test.iscsi storage.test.disk1, portal 192.168.1.43,3260] Login to [iface default, target iqn.2010-12.jp.test.iscsi storage.test.disk1, portal 192.168.1.43,3260] successful dmesgコマンドで接続時のデバイス名を確認します。 #dmesg ・・・・ sdb Write Protect is off sdb Mode Sense 77 00 00 08 SCSI device sdb drive cache write through sdb unknown partition table sd 1 0 0 0 Attached scsi disk sdb sd 1 0 0 0 Attached scsi generic sg1 type 0 (sdbで認識されました) 接続先ディスクの設定 fdiskでパーティションを作成します。 # fdisk /dev/sdb (nコマンドでnewパーティションを作成 → wコマンドで書き込みます) /dev/sdb1をフォーマットします。 #mkfs /dev/sdb1 /dev/sdb1にマウントします。 # mkdir /data # mount /dev/sdb1 /data
https://w.atwiki.jp/aerocats/pages/43.html
主にLinuxで扱われる言葉だが、Linuxカーネル?とアプリケーションなどをパッケージして配布されるものを指す。 より詳細には、GNU/Linuxオペレーティングシステムを容易に導入できるようにした配布物をLinuxディストリビューションと呼ぶ。 本来はLinuxカーネル?を「Linux」と呼ぶため、これらディストリビューションを「ディストリ」「OS」などと呼ぶ。 つまり、自分の環境を説明するのに「Linuxを使っていてこういう不具合がある、どうすればいいだろうか」といった質問はあまりに抽象的であり誰にも答えることができないだろう。 玄箱PROでのディストリビューション 書籍やネットで玄箱PROへの導入可能なディストリビューションについて、今では様々な報告がある。 結局はARM?というCPUアーキテクチャーに対応していることが重要なのだが、ディストリビューション側の努力もあり、対応状況は日々変化している。 現在のところ以下のディストリビューションが玄箱PROに導入可能だ。 ディストリビューション名 系統 標準パッケージ管理システム 導入方法 Debian GNU/Linux Debian系 apt Debian化の方法 FedoraCore6 Redhat系 yum FedoraCore6化の方法 Fedora8 Redhat系 yum Fedora8化の方法 GentooLinux - Portage GentooLinux化の方法 ディストリビューションの特長 ディストリビューションが様々に存在する理由は、それぞれの配布者がそれぞれの利便性を盛り込むためであり、必然的にディストリビューションごとに突出したメリット・デメリットがある。 Debianとは Fedoraとは Gentooとは